const express = require('express');
const userRouter = require('./src/public/router/user')
const pool = require('./src/public/router/pool')
const crypto = require('crypto')
const multer = require('multer');

const fs = require('fs');

//读取本地文件
let Shuj = fs.readFileSync('text.txt', 'utf-8')

const app = express();
const port = 3001;
//禁用ETag
app.disable('etag');


// --------------------------------------哈希256加密-----------------------------------
// 获取第二行的数据
// console.log("Shuj[1]=", Shuj.split('\n')[1]);
//  获取文件中第一行数据
let one_ = Shuj[0]
// console.log("Shuj[0]=", Shuj[0]);
// 获取第三行数据
// let three_ = Shuj.split('\n')[2]
// console.log("Shuj[2]=",three_);


//使用哈希256进行加密
// let sha256_one = crypto.createHash('sha256').update(one_).digest('hex')
// console.log('第一行的7=',sha256_one)
// let sha256_three = crypto.createHash('sha256').update(one_).digest('hex')
// console.log('第三行的7=',sha256_three)

//-------------------------------------------------------------------------------------
//  login 登录
app.get('/login', (req, res) => {
  let user_name = req.query.user_name
  let pass_word = hx256(req.query.pass_word)

  // console.log('user_name=',user_name)
  // console.log('pass_word=',pass_word)
  // 判空
  if (user_name == '' || pass_word == '') {
    res.send({ code: 400, msg: '账号密码不能为空' })
    return ''
  }

  // 根据账号密码查询数据库  获取数据库对应的，头像码
  let sql = 'select user,random from lh_user where user=? and pwd=?'
  pool.query(sql, [user_name, pass_word], (err, result) => {
    if (err) {
      return next(err)
    }
    // console.log('re1',result)
    if (result.length > 0) {
      res.send({ code: 200, msg: 'select success 成功', data: result })
    } else {
      res.send({ code: 500, msg: '失败', data: result })
    }
  })

});
// 哈希256  函数
function hx256(hxe) {
  let sha256 = crypto.createHash('sha256').update(hxe).digest('hex')
  return sha256
}

// app.get('/public/login', (req, res) => {
//   if (req.query.uphone != '123') {
//     res.send({ code: 404, msg: 'err: uphone err', data: req.query.uphone })
//     return ''
//   }

//   // setInterval(function(){
//   if (Shuj < '7') {
//     let a = parseInt(Shuj)        // 转换成 整型
//     Shuj = a + 1
//     //  
//     // console.log("typeof(Shuj)=",typeof(Shuj));     // 判断 类型
//     Shuj += ""
//     fs.writeFileSync('text.txt', Shuj)
//     res.send({ code: 200, msg: 'success 成功', data: Shuj })


//   } else {
//     console.log("data大于", Shuj);
//     res.send({ code: 200, msg: 'success data大于', data: Shuj })

//   }
//   // },1000)
//   // },60*1000*60*24)

// });

//接受文件
// app.post('/upload', (req, res) => {
//   // console.log("req=",req);
//   console.log("req.body=", req.body);
//   console.log("req.files=", req.files);
//   console.log("req.q=", req.query.gg);
//   console.log("req.path=", req.path);
//   res.send({ code: 200, msg: 'success 成功', data: req.query })
// });

//  引入中间件  
app.use(express.urlencoded({
  extended: true
}))

// 静态文件

app.use(express.static('src'))
// app.get('/', (req, res) => {
//   res.sendFile('C:\\Users\\12286\\Desktop\\速度公式计算\\index.html')
// })

//  给用户路由添加前缀
app.use('/public', userRouter)


app.listen(port, () => {

  console.log(`Server is running on port ${port}`);
});

//---------------------------------------

const upload = multer({ dest: 'uploads/' });// 上传文件的临时存储路径


// 处理文件上传
app.post('/upload', upload.single('file'), (req, res) => { // single 单个文件上传
  const file = req.file;
  if (!file) {
    return res.status(400).send('未选择文件');
  }

  const filePath = file.path;

  // 读取文件内容
  fs.readFile(filePath, (error, data) => {
    if (error) {
      return res.status(500).send('读取文件时发生错误');
    }

    // 计算哈希256
    const hash = crypto.createHash('sha256');
    hash.update(data);
    const hashValue = hash.digest('hex');

    // 返回哈希值
    res.send({ hash: hashValue });
  });
});

